home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / FredFish PD 314.adf / Zc / zcsrc.lzh / IOLib / stdio / access.c next >
C/C++ Source or Header  |  1989-05-29  |  710b  |  48 lines

  1. /*
  2.  * access.c: Check file accessibility.
  3.  *         15May89 - Created by Jeff Lydiatt.
  4.  * mode:
  5.  *    0: exists?
  6.  *    1:  __E
  7.  *    2:  _W_
  8.  *    3:  _WE
  9.  *    4:  R__
  10.  *    5:  R_E
  11.  *    6:  RW_
  12.  *    7:  RWE
  13.  */
  14. #include <errno.h>
  15. #include <libraries/dos.h>
  16.  
  17.    int
  18. access(filename, mode)
  19. char *filename;
  20. int mode;
  21. {
  22.     long    Lock();
  23.     void    UnLock();
  24.     long    lock, testmode;
  25.  
  26.     if ( (lock = Lock(filename, ACCESS_READ)) == 0 ){
  27.         errno = ENOENT;
  28.         return -1;
  29.     }
  30.  
  31.     switch(mode){
  32.         case 2: /* _W_ */
  33.         case 3: /* _WE */
  34.         case 6: /* RW_ */
  35.         case 7: /* RWE */
  36.             UnLock(lock);
  37.             testmode = ACCESS_WRITE; 
  38.             break;
  39.             if ( (lock = Lock(filename, ACCESS_WRITE)) == 0 ){
  40.                 errno = EACCES;
  41.                 return -1;
  42.             }
  43.     }
  44.  
  45.     UnLock(lock);
  46.     return    0;
  47. }
  48.